package main

import (
	"fmt"
	"unsafe"
)


//常量可以用作枚举
const (
	Unknow = 0
	Female = 1
	Male = 2
)

//常量可以用len(), cap(), unsafe.Sizeof()函数计算表达式的值。常量表达式中，函数必须是内置函数，否则编译不过
const (
	a = "golang"
	b = len(a)
	c = unsafe.Sizeof(a)
)

//iota，特殊常量，可以认为是一个可以被编译器修改的常量。
//iota 在 const关键字出现时将被重置为 0(const 内部的第一行之前)，const 中每新增一行常量声明将使 iota 计数一次(iota 可理解为 const 语句块中的行索引)。
//iota 可以被用作枚举值：
const (
	a1 = iota
	a2 = iota
	a3 = iota
)
//第一个 iota 等于 0，每当 iota 在新的一行被使用时，它的值都会自动加 1；所以 a1=0, a2=1, a3=2 可以简写为如下形式：
const(
	b1 = iota
	b2
	b3
	b4
)





//go run 1.go
//go build 1.go
func main() {
	fmt.Println("this is go scripts")
	fmt.Println("String " + " GoLang")

	println(a, b, c)

	println(a1, a2, a3)

	println(b1, b2, b3, b4)



	//多重赋值
	const a, b, c = 1, false, "str"
	println(a, b, c)


	println(Unknow, Female, Male)







}